#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

// -迷宫结构
typedef struct{

    unsigned int startRow,startCol; // 起点
    unsigned int endRow,endCol;     // 终点
    char ** cell;    // 地图
    unsigned int row,col;           // 行长度，列长度    
}MazeData;

// -方向-东-南-西-北
enum DIRECTION{

    EAST = 0,       // -东
    SOUTH  =1,      // -南
    WEST = 2,       // -西
    NORTH = 3,      // -北
    NONE_DIRECTION  // -无方向
};

// -向前 还是 返回
enum SELECTION{

    FORWARD = 0,    // -向前
    BACKWARD = 1,   // -返回（回溯）
    NONE = 3        // -表示已经找到终点了
};

// -从文件读取迷宫 计算出行（row） 列（col），起点和终点
MazeData * readMazeFromFile(const char * filename);

// -将文件的迷宫地图绘制到二维数组上
void mazeMap(FILE * fptr,MazeData * mazeData);

// -方向选择的主要函数，终点判断以及方向选择
void getOut(MazeData* data,int row,int col,int direction,int * mode);

// -判断当前的前进是否是死路
int judyDirection(MazeData * data,int row,int col,int direction);

// -打印迷宫以及迷宫的其他信息
void printMaze(MazeData * data);

